#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QSerialPort>     //提供访问串口的功能
#include <QSerialPortInfo> //提供系统中存在的串口信息
#include <QDebug>          //debug用

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

    static QByteArray hexStringToByteArray(const QString &hexString)
    {
        QByteArray byteArray;

        QString sanitizedHex = hexString;//确保字符串长度是偶数
        if (sanitizedHex.length() % 2 != 0){
            sanitizedHex.prepend('0');//如果长度是奇数，前面补零
        }
        for (int i=0; i<sanitizedHex.length(); i+=2)
        {
            QString byteString = sanitizedHex.mid(i,2);//取两位
            bool ok;
            byteArray.append(static_cast<char>(byteString.toInt(&ok,16)));//转为字节
            if (!ok){
                qDebug() << "Invalid hex byte:" << byteString;//字符串非16进制格式，转换报错
            }
        }
        return byteArray;//返回转换结果
    }

private slots:

    void on_Button_openserial_clicked();//点击打开串口按钮

    void ReadData();//串口读数据（接收数据）

    void on_Button_send_clicked();//点击发送按钮

private:
    Ui::MainWindow *ui;
    QSerialPort *serial;//定义串口对象
};

#endif // MAINWINDOW_H
